
unit ConsultaValores;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UFomCadastro, DBClient, Provider, DB, DBTables, Menus, StdCtrls,
  ComCtrls, DBCtrls, Buttons, Grids, DBGrids, ExtCtrls;

type
  TFConsultaValores = class(TFormCadastro)
    Label1: TLabel;
    Label2: TLabel;
    Label4: TLabel;
    Label3: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DBText1: TDBText;
    DBText2: TDBText;
    DBText3: TDBText;
    DBText4: TDBText;
    DBText5: TDBText;
    DBText6: TDBText;
    Label7: TLabel;
    Label8: TLabel;
    DBText7: TDBText;
    DBText8: TDBText;
    GroupBox2: TGroupBox;
    Label9: TLabel;
    GroupBox1: TGroupBox;
    DBText9: TDBText;
    DBGrid1: TDBGrid;
    Label10: TLabel;
    DBText10: TDBText;
    Label11: TLabel;
    DBText11: TDBText;
    dsSaldoEstoque: TDataSource;
    QSaldoEstoque: TQuery;
    QSaldoEstoqueSAL_EST_PRODUTO: TIntegerField;
    QSaldoEstoqueSAL_EST_QUANTIDADEEST: TFloatField;
    QSaldoEstoqueSAL_EST_QUANTIDADEDISP: TFloatField;
    QSaldoEstoqueSAL_EST_DATA_SALDO: TDateTimeField;
    QSaldoEstoqueSAL_EST_CUSTOMEDIOUNIT: TFloatField;
    QSaldoEstoqueSAL_EST_CUSTOMEDIOTOTAL: TFloatField;
    QSaldoEstoqueSAL_EST_CUSTOREPOSICAO: TFloatField;
    QSaldoEstoqueSAL_EST_DATA_CUSTO: TDateTimeField;
    QSaldoEstoqueSAL_EST_QTD_MINIMA: TFloatField;
    QSaldoEstoqueSAL_EST_DATA_QTD_MINIMA: TDateTimeField;
    QSaldoEstoqueSAL_EST_QTD_MAXIMA: TFloatField;
    QSaldoEstoqueSAL_EST_DATA_QTD_MAXIMA: TDateTimeField;
    QSaldoEstoqueCODIGOEMPRESA: TIntegerField;
    QSaldoEstoqueSAL_EST_ULTIMA_ATUALIZACAO: TDateTimeField;
    QSaldoEstoqueUSUARIO_CADASTRO: TStringField;
    QSaldoEstoqueUSUARIO_AUTERACAO: TStringField;
    QSaldoEstoqueUSUARIO_EXCLUSAO: TStringField;
    QSaldoEstoqueDATA_CADASTRO: TDateTimeField;
    QSaldoEstoqueDATA_EXCLUSAO: TDateTimeField;
    QSaldoEstoqueDATA_AUTERACAO: TDateTimeField;
    QSaldoEstoqueEXCLUIDO: TStringField;
    dsSaldoLocal: TDataSource;
    QSaldoLocal: TQuery;
    QSaldoLocalSAL_LOC_PRODUTO: TIntegerField;
    QSaldoLocalSAL_LOC_LOCAL: TIntegerField;
    QSaldoLocalSAL_LOC_QUANTIDADEEST: TFloatField;
    QSaldoLocalSAL_LOC_QUANTIDADEDISP: TFloatField;
    QSaldoLocalCODIGOEMPRESA: TIntegerField;
    QSaldoLocalUSUARIO_CADASTRO: TStringField;
    QSaldoLocalUSUARIO_AUTERACAO: TStringField;
    QSaldoLocalUSUARIO_EXCLUSAO: TStringField;
    QSaldoLocalDATA_CADASTRO: TDateTimeField;
    QSaldoLocalDATA_EXCLUSAO: TDateTimeField;
    QSaldoLocalDATA_AUTERACAO: TDateTimeField;
    QSaldoLocalEXCLUIDO: TStringField;
    QSaldoLocalLOC_DESCRICAO: TStringField;
    GroupBox3: TGroupBox;
    DBGrid2: TDBGrid;
    dsPedido: TDataSource;
    QPedido: TQuery;
    QPedidoPED_SOLICITANTE_DESC: TStringField;
    QPedidoPED_FORNECEDOR_DESC: TStringField;
    QPedidoPED_DATA: TDateTimeField;
    QPedidoPED_CODIGO: TIntegerField;
    QPedidoPED_SITUACAO: TIntegerField;
    QPedidoPED_DATASITUACAO: TDateTimeField;
    QPedidoPED_VALOR_TOT_ITENS: TFloatField;
    QPedidoPED_VALOR_TOT_OUTROS_VALORES: TFloatField;
    QPedidoPED_VALOR_PEDIDO: TFloatField;
    QPedidoPED_SOLICITACAO: TIntegerField;
    QPedidoPED_DATASOLICITACAO: TDateTimeField;
    QPedidoITENS_PED_CODIGO: TIntegerField;
    QPedidoITENS_PED_PEDIDO: TIntegerField;
    QPedidoITENS_PED_PRODUTO: TIntegerField;
    QPedidoITENS_PED_QUANTIDADE: TFloatField;
    QPedidoITENS_PED_QUANTIDADEATEN: TFloatField;
    QPedidoITENS_PED_VALOR: TFloatField;
    QPedidoITENS_PED_SITUACAO: TIntegerField;
    QPedidoITENS_PED_VALOR_TOTAL: TFloatField;
    QPedidoITENS_PED_LOCAL: TIntegerField;
    QPedidoITENS_PED_OUTROS_VALORES: TFloatField;
    QPedidoITENS_PED_PERC_IPI: TFloatField;
    QPedidoITENS_PED_VALOR_IPI: TFloatField;
    QPedidoITENS_PED_NF: TStringField;
    QPedidoUSUARIO_CADASTRO: TStringField;
    QPedidoUSUARIO_AUTERACAO: TStringField;
    QPedidoUSUARIO_EXCLUSAO: TStringField;
    QPedidoDATA_CADASTRO: TDateTimeField;
    QPedidoDATA_EXCLUSAO: TDateTimeField;
    QPedidoDATA_AUTERACAO: TDateTimeField;
    QPedidoEXCLUIDO: TStringField;
    QPedidoITENS_PED_PRODUTO_DESC: TStringField;
    QPedidoITENS_PED_DATAATEND: TDateTimeField;
    QPedidoITENS_PED_NFATEND: TIntegerField;
    QPedidoITENS_PED_IGUALDADE: TStringField;
    QPedidoITENS_PED_CONFERENCIA: TStringField;
    QPedidoITENS_PED_PENDENCIA: TStringField;
    QPedidoITENS_PED_OBS1: TStringField;
    QPedidoITENS_PED_OBS2: TStringField;
    QPedidoITENS_PED_DATACONF: TDateTimeField;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    Label16: TLabel;
    DBText15: TDBText;
    DBText16: TDBText;
    cdsCadastroPROD_CODIGO: TIntegerField;
    cdsCadastroPROD_DESCRICAOENT: TStringField;
    cdsCadastroPROD_DESCRICAOSAI: TStringField;
    cdsCadastroPROD_REFERENCIA: TStringField;
    cdsCadastroPROF_REF_FABRICANTE: TStringField;
    cdsCadastroPROD_UNIDSAIDA: TStringField;
    cdsCadastroPROD_GRUPOPRODUTO: TIntegerField;
    cdsCadastroPROD_CLASSIFPROD1: TIntegerField;
    cdsCadastroPROD_CLASSFISCAL2: TIntegerField;
    cdsCadastroPROD_CLASSFISCAL9: TIntegerField;
    cdsCadastroPROD_CONTACONTABIL: TIntegerField;
    cdsCadastroPROD_ICMS: TStringField;
    cdsCadastroPROD_IPI: TStringField;
    cdsCadastroPROD_TIPO: TIntegerField;
    cdsCadastroPROD_NATUREZA: TIntegerField;
    cdsCadastroPROD_SITUACAOTRIBUTARIA: TIntegerField;
    cdsCadastroPROD_VALOR: TFloatField;
    cdsCadastroPROD_VALORCOMPRA: TFloatField;
    cdsCadastroPROD_SUBS_TRIBUTARIA: TFloatField;
    cdsCadastroPROD_INCENTIVO_FISCAL: TStringField;
    cdsCadastroPROD_PESO_BRUTO: TFloatField;
    cdsCadastroPROD_PESO_LIQUIDO: TFloatField;
    cdsCadastroPROD_ALIQUOTA_ICMS: TFloatField;
    cdsCadastroPROD_ALIQUOTA_IPI: TFloatField;
    cdsCadastroPROD_REDUCAO_BASE_ICMS: TFloatField;
    cdsCadastroPROD_REDUCAO_BASE_IPI: TFloatField;
    cdsCadastroPROD_PERC_AGREGACAO_ICMS_SUB: TFloatField;
    cdsCadastroPROD_PERC_PIS: TFloatField;
    cdsCadastroPROD_CREDITAR_PIS: TIntegerField;
    cdsCadastroPROD_PERC_COFINS: TFloatField;
    cdsCadastroPROD_CREDITAR_COFINS: TIntegerField;
    cdsCadastroPROD_ICMS_SUBS: TStringField;
    cdsCadastroPROD_CONTACONTABIL_REC_CUST: TIntegerField;
    cdsCadastroPROD_CONTACONTABIL_CUSTO: TIntegerField;
    cdsCadastroPROD_CONTACONTABIL_RECEITA: TIntegerField;
    cdsCadastroPROD_CONTADEVOLUCAO: TIntegerField;
    cdsCadastroPROD_CONSIDERAR_TOPERACAO_NFSAI: TIntegerField;
    cdsCadastroPROD_CODIGO_APURACAO: TStringField;
    cdsCadastroPROD_IDENTI_ESPECIAL: TStringField;
    cdsCadastroPROD_CODIGO_NBM: TStringField;
    cdsCadastroPROD_PROPIEDADE: TIntegerField;
    cdsCadastroPROD_COMISSAO_VEND: TFloatField;
    cdsCadastroPROD_CV: TFloatField;
    cdsCadastroPROD_FORNECEDOR_PREF: TIntegerField;
    cdsCadastroPROD_DESCRICAO_COMPLEMENTO: TStringField;
    cdsCadastroPROD_DESCRICAO_COMPLEMENTO2: TStringField;
    cdsCadastroPROD_DESCRICAO_COMPLEMENTO3: TStringField;
    cdsCadastroPROD_DESCRICAO_COMPLEMENTO4: TStringField;
    cdsCadastroPROD_DESCRICAO_COMPLEMENTO5: TStringField;
    cdsCadastroPROD_TRAVAPEDIDO: TStringField;
    cdsCadastroPROD_CODIGO_CONFERENCIA: TIntegerField;
    cdsCadastroUSUARIO_CADASTRO: TStringField;
    cdsCadastroUSUARIO_AUTERACAO: TStringField;
    cdsCadastroUSUARIO_EXCLUSAO: TStringField;
    cdsCadastroDATA_CADASTRO: TDateTimeField;
    cdsCadastroDATA_EXCLUSAO: TDateTimeField;
    cdsCadastroDATA_AUTERACAO: TDateTimeField;
    cdsCadastroEXCLUIDO: TStringField;
    cdsCadastroPROD_MARCA: TStringField;
    cdsCadastroPROD_FABRICANTE: TIntegerField;
    cdsCadastroPROD_NOVO_RECUPERADO: TStringField;
    cdsCadastroPROD_LOCALIZACAO: TStringField;
    cdsCadastroPROD_ATIVO: TStringField;
    cdsCadastroPROD_CONTROLE_MANUTENCAO: TStringField;
    cdsCadastroPROD_KIT: TStringField;
    cdsCadastroPROD_USO_CONSUMO: TStringField;
    cdsCadastroPROD_MERCADO_NR: TStringField;
    cdsCadastroPROD_PERECIVEL: TStringField;
    cdsCadastroPROD_RESUPRIMENTO: TStringField;
    cdsCadastroPROD_PPEDIDO: TStringField;
    cdsCadastroPROD_QTD_PPEDIDO: TIntegerField;
    cdsCadastroPROD_DT_PPEDIDO: TDateTimeField;
    cdsCadastroPROD_PRAZO_ENTREGA: TIntegerField;
    cdsCadastroPROD_TIPOVENDA: TIntegerField;
    cdsCadastroPROD_IND_CENTROCUSTO: TStringField;
    cdsCadastroPROD_CODIGO_ANT: TIntegerField;
    cdsCadastroCHAVE_CLASS: TStringField;
    lbCustoReposi: TLabel;
    lbCustoUnitario: TLabel;
    lbCustoTotal: TLabel;
    Label17: TLabel;
    lbDataCusto: TLabel;
    QPedidoNF_DATAESTOQUE: TDateTimeField;
    QPedidoITENS_NF_VALORUNITARIO: TFloatField;
    QPedidoUSUARIO_RECUPERACAO: TStringField;
    QPedidoDATA_RECUPERACAO: TDateTimeField;
    QPedidoNOTA: TStringField;
    QPedidoITENS_NF_QUANTIDADE: TFloatField;
    QPedidoSITUACAO_DA_REPLICACAO: TStringField;
    QPedidoCODIGOEMPRESA: TIntegerField;
    QPedidoDATA_REPLICACAO: TDateTimeField;
    QPedidoITENS_PED_PRODMARCA: TStringField;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure QPedidoAfterOpen(DataSet: TDataSet);
    procedure dsCadastroDataChange(Sender: TObject; Field: TField);
    procedure dsSaldoEstoqueDataChange(Sender: TObject; Field: TField);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure consultaSaldoEstoque(codProd, codEmpresa : integer);
    procedure consultaSaldoLocal(codProd, codEmpresa : integer);
    procedure consultaPedido(codProd, codEmpresa : integer);
  public
    { Public declarations }
  end;

var
  FConsultaValores: TFConsultaValores;

implementation

uses UGeral;

{$R *.dfm}

procedure TFConsultaValores.consultaPedido(codProd, codEmpresa: integer);
const
  ctPesquisa =
    {'SELECT'#10+
    '  PEDIDO.PED_SOLICITANTE_DESC,'#10+
    '  PEDIDO.PED_FORNECEDOR_DESC,'#10+
    '  PEDIDO.PED_DATA,'#10+
    '  PEDIDO.PED_CODIGO,'#10+
    '  PEDIDO.PED_SITUACAO,'#10+
    '  PEDIDO.PED_DATASITUACAO,'#10+
    '  PEDIDO.PED_VALOR_TOT_ITENS,'#10+
    '  PEDIDO.PED_VALOR_TOT_OUTROS_VALORES,'#10+
    '  PEDIDO.PED_VALOR_PEDIDO,'#10+
    '  PEDIDO.PED_SOLICITACAO,'#10+
    '  PEDIDO.PED_DATASOLICITACAO,'#10+
    '  ITENSPEDIDO.*'#10+
    'FROM'#10+
    '  PEDIDO'#10+
    '  INNER JOIN ITENSPEDIDO ON (PEDIDO.PED_CODIGO = ITENSPEDIDO.ITENS_PED_PEDIDO)'#10+
    'WHERE'#10+
    '  PEDIDO.CODIGOEMPRESA = %s AND ITENSPEDIDO.ITENS_PED_PRODUTO = %s'; }

    'SELECT'#10+
    '  ITENSNOTAFISCAL.itens_nf_quantidade, '#10+
    '  PEDIDO.PED_SOLICITANTE_DESC,'#10+
    '  PEDIDO.PED_FORNECEDOR_DESC,'#10+
    '  PEDIDO.PED_DATA,'#10+
    '  PEDIDO.PED_CODIGO,'#10+
    '  PEDIDO.PED_SITUACAO,'#10+
    '  PEDIDO.PED_DATASITUACAO,'#10+
    '  PEDIDO.PED_VALOR_TOT_ITENS,'#10+
    '  PEDIDO.PED_VALOR_TOT_OUTROS_VALORES,'#10+
    '  PEDIDO.PED_VALOR_PEDIDO,'#10+
    '  PEDIDO.PED_SOLICITACAO,'#10+
    '  PEDIDO.PED_DATASOLICITACAO,'#10+
    '  NOTAFISCAL.NF_NOTAFISCAL || ''/'' || NOTAFISCAL.NF_SERIE AS NOTA,'#10+
    '  NOTAFISCAL.NF_DATAESTOQUE,'#10+
    '  ITENSNOTAFISCAL.ITENS_NF_VALORUNITARIO,'#10+
    '  ITENSPEDIDO.*'#10+
    'FROM'#10+
    '  PEDIDO '#10+
    '  INNER JOIN ITENSPEDIDO     ON (PEDIDO.PED_CODIGO = ITENSPEDIDO.ITENS_PED_PEDIDO)'#10+
    '  LEFT  JOIN ITENSNOTAFISCAL ON (ITENSPEDIDO.ITENS_PED_PRODUTO = ITENSNOTAFISCAL.ITENS_NF_PRODUTO)'#10+
    '                            AND (ITENSNOTAFISCAL.ITENS_NF_PEDIDO = ITENSPEDIDO.ITENS_PED_PEDIDO)'#10+
    '  LEFT  JOIN NOTAFISCAL      ON (ITENSNOTAFISCAL.ITENS_NF_NOTAFISCAL = NOTAFISCAL.NF_CODIGO)'#10+
    'WHERE'#10+
    '  PEDIDO.CODIGOEMPRESA = %s AND ITENSPEDIDO.ITENS_PED_PRODUTO = %s'#10+
    'ORDER BY'#10+
    '  PEDIDO.PED_DATA DESC';


begin

  QPedido.Close;
  QPedido.SQL.Clear;
  QPedido.SQL.Add(Format(ctPesquisa, [intToStr(codEmpresa),
                                      intToStr(codProd)]));
  QPedido.Open;

end;

procedure TFConsultaValores.consultaSaldoEstoque(codProd,
  codEmpresa: integer);
const
  ctPesquisa =
    'SELECT * FROM SALDOESTOQUE WHERE CODIGOEMPRESA = %s AND SAL_EST_PRODUTO = %s';

begin

  QSaldoEstoque.Close;
  QSaldoEstoque.SQL.Clear;
  QSaldoEstoque.SQL.Add(Format(ctPesquisa, [intToStr(codEmpresa),
                                            intToStr(codProd)]));
  QSaldoEstoque.Open;

end;

procedure TFConsultaValores.consultaSaldoLocal(codProd,
  codEmpresa: integer);
const
  ctPesquisa =
    'SELECT'#10+
    '  SALDOLOCAL.*,'#10+
    '  LOCAL.LOC_DESCRICAO'#10+
    'FROM'#10+
    '  SALDOLOCAL'#10+
    '  INNER JOIN LOCAL ON SALDOLOCAL.SAL_LOC_LOCAL = LOCAL.LOC_CODIGO'#10+
    'WHERE SALDOLOCAL.CODIGOEMPRESA = %s AND SAL_LOC_PRODUTO = %s';

begin

  QSaldoLocal.Close;
  QSaldoLocal.SQL.Clear;
  QSaldoLocal.SQL.Add(Format(ctPesquisa, [intToStr(codEmpresa),
                                          intToStr(codProd)]));
  QSaldoLocal.Open;

end;

procedure TFConsultaValores.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  FConsultaValores.Release;
  FConsultaValores := Nil;
end;

procedure TFConsultaValores.QPedidoAfterOpen(DataSet: TDataSet);
begin
  inherited;
  //QItensPedido.Open;
end;

procedure TFConsultaValores.dsCadastroDataChange(Sender: TObject;
  Field: TField);
begin
  inherited;

  consultaSaldoEstoque(cdsCadastro.FieldByName('PROD_CODIGO').AsInteger, Codigoempresa);
  consultaSaldoLocal(cdsCadastro.FieldByName('PROD_CODIGO').AsInteger, Codigoempresa);
  consultaPedido(cdsCadastro.FieldByName('PROD_CODIGO').AsInteger, Codigoempresa);

  BtnIncluir.Visible:=false;
  BtnEditar.Visible:=false;
  BtnExcluir.Visible:=false;
    
end;

procedure TFConsultaValores.dsSaldoEstoqueDataChange(Sender: TObject;
  Field: TField);
begin
  inherited;

  lbCustoReposi.Caption   := FormatFloat('#,##0.0000', dsSaldoEstoque.DataSet.FieldByName('SAL_EST_CUSTOREPOSICAO').AsFloat);
  lbCustoUnitario.Caption := FormatFloat('#,##0.0000', dsSaldoEstoque.DataSet.FieldByName('SAL_EST_CUSTOMEDIOUNIT').AsFloat);
  lbCustoTotal.Caption    := FormatFloat('#,##0.00', dsSaldoEstoque.DataSet.FieldByName('SAL_EST_CUSTOMEDIOTOTAL').AsFloat);
  lbDataCusto.Caption     := FormatDateTime('dd/mm/yyyy',  dsSaldoEstoque.DataSet.FieldByName('SAL_EST_DATA_CUSTO').AsDateTime)
end;

procedure TFConsultaValores.FormCreate(Sender: TObject);
begin
  QCadastro.SQL.Clear;
  QCadastro.SQL.Add('SELECT * FROM PRODUTO WHERE (PRODUTO.EXCLUIDO <> ''S'' OR PRODUTO.EXCLUIDO IS NULL)');

  inherited;
  BtnIncluir.Visible:=false;
  BtnEditar.Visible:=false;
  BtnExcluir.Visible:=false;

end;

end.
